﻿''' <summary>
''' Métodos essenciais para a criação de classes de regra de negócio.
''' </summary>
''' <remarks></remarks>

Public Interface IControl(Of T)

    ''' <summary>
    ''' Salvar entidade no banco de dados
    ''' </summary>
    ''' <param name="entity">Objeto derivado da classe de Modelo</param>
    ''' <returns>
    ''' Retorno: 
    '''  True - > Salvo com sucesso.
    '''  False -> Não salvo, pode ter ocorrido algum erro, 
    ''' utilize Breakpoint e Watch para verificar as excessões 
    ''' geradas no método.
    ''' </returns>
    ''' <remarks></remarks>
    Function Salvar(ByVal entity As T) As Boolean

    ''' <summary>
    ''' Excluir entidade no banco
    ''' </summary>
    ''' <param name="entity">Objeto derivado da classe de Modelo</param>
    ''' <returns>
    ''' Retorno:
    '''  True -> Removido com sucesso.
    '''  False -> Falha ao salvar, verifique com Breakpoints e Watchs
    ''' as excessões geradas.
    ''' </returns>
    ''' <remarks></remarks>
    Function Excluir(ByVal entity As T) As Boolean

    ''' <summary>
    ''' Lista de dados
    ''' </summary>
    ''' <returns>Retorna do tipo IList(Of Modelo)</returns>
    ''' <remarks></remarks>
    Function ListaTudo() As IList(Of T)

    ''' <summary>
    ''' Carrega uma linha de dados do banco segundo o Id
    ''' </summary>
    ''' <param name="entity">Objeto derivado da classe de Modelo</param>
    ''' <returns>Retorna um objeto do tipo da classe de modelo</returns>
    ''' <remarks></remarks>
    Function ListaUm(ByVal entity As T) As T
End Interface
